package tc.alert.tckejisoc.wx;

import com.alibaba.fastjson.JSONObject;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Markdown格式的KV消息（自动换行+高亮）
 */
public class KvMarkdownMessage extends WeComMessage {
    private final Map<String, Object> data = new LinkedHashMap<>();
    private String title;
    private boolean useTableStyle = true; // 是否使用表格样式

    public KvMarkdownMessage(String webhookUrl) {
        super(webhookUrl);
    }

    // 添加键值对
    public KvMarkdownMessage addField(String key, Object value) {
        data.put(key, value);
        return this;
    }

    // 设置标题
    public KvMarkdownMessage setTitle(String title) {
        this.title = title;
        return this;
    }

    // 启用表格样式（默认启用）
    public KvMarkdownMessage useTableStyle(boolean enable) {
        this.useTableStyle = enable;
        return this;
    }

    @Override
    protected String getMsgType() {
        return "markdown";
    }

    @Override
    protected JSONObject buildMessageBody() {
        StringBuilder markdown = new StringBuilder();

        // 添加标题
        if (title != null) {
            markdown.append("#### ").append(title).append("\n\n");
        }

        // 构建表格或列表样式
        if (useTableStyle) {
            markdown.append("| 属性 | 值 |\n| ---- | ---- |\n");
            data.forEach((k, v) -> markdown.append("| ​**").append(k).append("** | ").append(v).append(" |\n"));
        } else {
            data.forEach((k, v) -> markdown.append("• ​**").append(k).append("**: ").append(v).append("\n\n"));
        }

        // 设置Markdown内容
        JSONObject markdownBody = new JSONObject();
        markdownBody.put("content", markdown.toString());
        content.put("markdown", markdownBody);

        return content;
    }
}